package br.net.atasacramental.organizacao.dao;
import br.net.atasacramental.organizacao.model.OrganizacaoLancamento;
import br.net.atasacramental.organizacao.model.OrganizacaoOrcamentoView;
import br.net.atasacramental.util.ConexaoDB;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
 * @author alexandre.araujo
 */
public class OrganizacaoLancamentoDAO{
	private String[][] ordemP = {{"idTrimestre", "desc"}};
	@SuppressWarnings("unchecked")
    public List<OrganizacaoLancamento> get() {
    	return (List<OrganizacaoLancamento>) ConexaoDB.get(OrganizacaoLancamento.class,true,1,100,null,ordemP);
    }    
    public OrganizacaoLancamento getByIdOrganizacaoLancamento(int idOrganizacaoLancamento) {
    	return (OrganizacaoLancamento) ConexaoDB.getById(OrganizacaoLancamento.class,idOrganizacaoLancamento);
    }    
    @SuppressWarnings("unchecked")
    public List<OrganizacaoLancamento> getByIdOrganizacao(int idOrganizacao) {
    	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("idOrganizacao",idOrganizacao);
        return (List<OrganizacaoLancamento>) ConexaoDB.get(OrganizacaoLancamento.class,true,1,100,params,ordemP);
    }
    @SuppressWarnings("unchecked")
	public List<OrganizacaoLancamento> getByIdTrimestre(int idTrimestre) {
    	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("idTrimestre",idTrimestre);
        return (List<OrganizacaoLancamento>) ConexaoDB.get(OrganizacaoLancamento.class,true,1,100,params,ordemP);
    }
    @SuppressWarnings("unchecked")
    public List<OrganizacaoLancamento> getByDescricao(String descricao) {
    	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("descricao", descricao);
        return (List<OrganizacaoLancamento>) ConexaoDB.get(OrganizacaoLancamento.class,true,1,100,params,ordemP);
    }
    public int mesToTrimestre(int mes){
    	int trimestre = 3;
    	mes++;
    	if(mes < 4){
    		trimestre = 1;
    	}else if(mes > 9){
    		trimestre = 4;
    	}else if(mes > 3 && mes < 7){
    		trimestre = 2;
    	}
    	return trimestre;    	
    }
    @SuppressWarnings("unchecked")
    public List<OrganizacaoOrcamentoView> getOrcamentoByOrganizacaoTrimestre(int idOrganizacao,int idTrimestre){
    	Map<String,Object> params = new HashMap<String, Object>();
     	params.put("idOrganizacao", idOrganizacao);
     	params.put("idTrimestre",idTrimestre);
        return (List<OrganizacaoOrcamentoView>) ConexaoDB.get(OrganizacaoOrcamentoView.class,true,1,100,params,ordemP);
    }
    @SuppressWarnings("unchecked")
    public OrganizacaoOrcamentoView getDadosOrcamento(OrganizacaoLancamento o){
    	Map<String,Object> params = new HashMap<String, Object>();
    	params.put("idOrganizacao",o.getIdOrganizacao());
     	params.put("idTrimestre",o.getIdTrimestre());
     	List<OrganizacaoOrcamentoView> lsttmp = (List<OrganizacaoOrcamentoView>) ConexaoDB.get(OrganizacaoOrcamentoView.class,true,1,100,params,ordemP);
        if(lsttmp.size() > 0){
        	return lsttmp.get(0);
        }
        return null; 
    }
    @SuppressWarnings("unchecked")
    public List<OrganizacaoOrcamentoView> getOrcamento(){
    	return (List<OrganizacaoOrcamentoView>) ConexaoDB.get(OrganizacaoOrcamentoView.class,true,1,100,null,ordemP);
    }
    public boolean insert(OrganizacaoLancamento o){
        return ConexaoDB.insert(o);
    }
    public boolean update(OrganizacaoLancamento o){
        return ConexaoDB.update(o);
    }
    public boolean delete(OrganizacaoLancamento o){
        return ConexaoDB.delete(o);
    }
}